/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package servicioOferta;

import java.util.ArrayList;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import mappingOfObject.Oferta;
import mappingOfObject.Sucursal;

/**
 *
 * @author felipe
 */
@WebService(serviceName="ofertaWebService")
public class OfertaWebService {

    @WebMethod(operationName = "obtenerOfertaId")
    public Oferta obtenerOfertaId(@WebParam(name = "id") long id) {
        return (Oferta) persistenceObjectHandler.HandlerObjectPersistence.loadObjectByLongId(id, Oferta.class);
    }

    @WebMethod(operationName = "crearOfertaAsignarSucursales")
    public boolean crearOfertaAsignarSucursales(
    @WebParam(name = "sucursales") String sucursales, //id de sucursales
    @WebParam(name = "fechaInicio") String fechaInicio,
    @WebParam(name = "fechaTermino") String fechaTermino,
    @WebParam(name = "id_usuario") long id_usuario,
    @WebParam(name = "descripcion") String descripcion)
    {
        boolean a= false;
        Oferta o = new Oferta();
        o.setDescripcion(descripcion);
        o.setFechaInicio(dao.DaoOferta.stringToDate(fechaInicio, 0));
        o.setFechaTermino(dao.DaoOferta.stringToDate(fechaTermino, 0));
        o.setVisible(true);
        o.setId_usuario(id_usuario);
        a = persistenceObjectHandler.HandlerObjectPersistence.saveObject(o);
        String[] datos = sucursales.split(" ");
        
        for(int i=0; i<datos.length; i++){
            long ids = Long.parseLong(datos[i].toString());
            Sucursal s=(Sucursal) persistenceObjectHandler.HandlerObjectPersistence.loadObjectByLongId(ids, Sucursal.class);
            s.addOferta(o);
            persistenceObjectHandler.HandlerObjectPersistence.updateObject(s);
        }
        return a;   
    }

    @WebMethod(operationName = "cancelarOferta")
    public boolean cancelarOferta(
    @WebParam(name = "id") long id,
    @WebParam(name = "motivoCancelacion") String motivoCancelacion) // falta mapeo
    {
        Oferta o=(Oferta) persistenceObjectHandler.HandlerObjectPersistence.loadObjectByLongId(id, Oferta.class);
        o.setVisible(false);
        return persistenceObjectHandler.HandlerObjectPersistence.saveOrUpdateObject(o);
    }

    @WebMethod(operationName = "listarOfertaSucursal")
    public List<Oferta> listarOferta(
    @WebParam(name = "idsucursal") long idsucursal)
    {
        Sucursal s=(Sucursal)persistenceObjectHandler.HandlerObjectPersistence.loadObjectByLongId(idsucursal, Sucursal.class);
        List<Oferta> aux=s.getOfertas();
        List<Oferta> ofertas = new ArrayList<Oferta>();
        for(int i=0; i<aux.size(); i++){
            if(aux.get(i).isVisible()){
                ofertas.add(aux.get(i)); //lista de ofertas activas
            }
        }
        return ofertas;
    }
}
